from typing import Any


class CommandInvoker:
    """注册命令, 并根据命令名称来执行命令"""

    def __init__(self):
        """初始化CommandInvoker, 创建一个空的命令字典"""
        self._commands = {}

    def register(self, command_name: str, command: Any):
        """注册一个命令

        Args:
            command_name (str): 命令名称
            command (object): 实现了execute方法的命令对象
        """
        self._commands[command_name] = command

    def execute(self, command_name: str, args: Any):
        """执行一个注册的命令

        Args:
            command_name (str): 要执行的命令名称
            args (Namespace): 解析的命令行参数
        """
        if command_name in self._commands:
            self._commands[command_name].execute(args)
        else:
            print(f"命令 [{command_name}] 未识别")
